In [1]:
# Standard setup block for running Python code
from __future__ import division, print_function
import os
if os.path.split(os.getcwd())[-1] == "Lab notebooks":
os.chdir("../../")
print("Moved to experiment root directory")
from Modules.processing import *
from Modules.plotting import *
plt.style.use("Config/plotstyle.mplstyle")
%matplotlib inline
Got to the lab about 1 PM.
Homed turbine, tow, y-, and z-axes.
Filled tank 1--2 mm to get to 2.44 m.
Mixed up seeding from surface with squeegee like yesterday.
2:05 PM -- Dummy tow at 1.0 m/s to mix tank.
2:07 PM -- Another dummy tow. Vectrino SNR looking good.
2:13 PM -- Resuming Wake-1.0-0.75. Confirmed y-position to be correctly scaled.
2:50 PM -- Finished Wake-1.0-0.75. At negative limits RPOS(z) = -0.0360169 and RPOS(y) = -1.526302.
Tried tuning S700 servo drive to use linear encoder as feedback, which did not help with belt resonance--only with final position accuracy, which is not an issue here.
6:26 PM -- Going to try to fill in some of the high TSR runs at 1.0 m/s. Re-homed turbine, tow, y- and z-axes.
Note there is a couple degrees of backlash at the upper turbine drive flange.
6:40 PM -- Did one high TSR run at 1.0 m/s. Lots of resonance with the belt up until about 25 seconds, giving maybe 6 seconds of good data. Going to try a shakedown run at 1.3 m/s to see if we can push the limits of the Re-dependence a bit.
6:51 PM -- Going to do a settling run at 1.3 m/s, since it looks like we can do Re-dependence runs there.
7:14 PM -- Continuing Perf-tsr_0 with runs at 1.3 m/s.
8:04 PM -- Finished Perf-tsr_0 and Perf-tsr_0-b. Re-dependence still looks good. Backing up data.
8:08 PM -- Starting Perf-0.6-b
8:59 PM -- Stopping for the night. Backing up data.
In [84]:
Section("Perf-0.6-b").process(nproc=1, nruns="new")
In [85]:
plot_perf_curves(preliminary=True)
In [66]:
plot_perf_re_dep(dual_xaxes=True, preliminary=True, errorbars=True, normalize_by=1.0)
In [2]:
Section("Wake-1.0-0.75").process(nproc=1, nruns="new")
In [10]:
plot_meancontquiv()
watermark()
In [39]:
# Calculating tare torque test matrix for experiment
def calc_rpm((tow_speed, tsr)):
omega = tsr*tow_speed/R
return omega/(2*np.pi)*60.0
lowest = (0.2, 1.0) # tow_speed, tsr
highest = (1.4, 4.0)
rpm_start = calc_rpm(lowest)
rpm_end = calc_rpm(highest)
steps = 25
rpms = np.linspace(rpm_start, rpm_end, steps)
revs = np.ones(len(rpms))*30.0
revs[0] = 4
revs[1] = 8
revs[2] = 12
revs[3] = 16
revs[4] = 20
revs[5] = 24
revs[-1] = 32
df = pd.DataFrame()
df["rpm"] = rpms
df.index.name = "run"
df["revs"] = revs
df.to_csv("Config/Test plan/Tare-torque.csv")
df["minutes"] = revs/rpms
df["samples"] = np.floor(df.minutes*60*2000)
df["samples_per_rev"] = df.samples/df.revs
print("Total time (minutes):", df.minutes.sum())
df
Out[39]:
In [73]:
# Setting things up
setup_time_sec = 3600
n_setup_times = 4
# Seconds per tow at each speed
seconds = {0.6: 100 + 160,
0.8: 90 + 200,
1.0: 84 + 240,
1.2: 80 + 300}
# Wake runs
runs_per_wake = 43
nwake = 26/43
wake_speed = 1.0
# Perf runs
runs_per_perf = 24
# Runs for strut torque and strut covers
strut_covers_runs = 22
strut_torque_runs = strut_covers_runs*2
# Tare drag and torque
tare_drag_runs = 14
tare_torque_runs = 30
tare_drag_dur = 200
tare_torque_dur = 120
total_time_sec = n_setup_times*setup_time_sec + runs_per_wake*nwake*seconds[wake_speed] \
+ strut_covers_runs*seconds[wake_speed] + strut_torque_runs*tare_torque_dur \
+ tare_drag_runs*tare_drag_dur + tare_torque_runs*tare_torque_dur
total_hours = total_time_sec/3600
hours_per_day = 10
total_days = total_hours/hours_per_day
print(total_hours, total_days)